home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1997 February / macformat-047.iso / Shareware Plus / Developers / DLOGManager 1.02 / Source Code / CgestisciDLOGDati_v01.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-07  |  10.8 KB  |  512 lines  |  [TEXT/KAHL]

  1. /*** File: "CgestisciDLOGDati_v01.h"
  2.  *
  3.  *    Handle a DLOG. The item in the DLOG are descript with
  4.  *    a type 'EdFl' resouce.
  5.  *    © 1994-96 Francesco Cadili.
  6.  *
  7.  ****/
  8. #ifndef __CgestisciDLOGDati__
  9. #define __CgestisciDLOGDati__
  10.  
  11. #ifndef __CPushButton__
  12. #include "CPushButton_v002.h"
  13. #endif
  14. #ifndef __CDefPushButton__
  15. #include "CDefPushButton_v002.h"
  16. #endif
  17. #ifndef __CGestisciMenu__
  18. #include "CGestisciMenu_v003.h"
  19. #endif
  20. #ifndef __CGestisciTE__
  21. #include "CGestisciTE_v02.h"
  22. #endif
  23. #ifndef __CGestisciElOrd__
  24. #include "CGestisciElOrd_v03.h"
  25. #endif
  26. #ifndef __CString_P__
  27. #include "Cstring_P_v32.h"
  28. #endif
  29.  
  30. class CtxtRec
  31. {
  32.     public:
  33.         CGestisci_TE    *TEH;
  34.         short            popUpEl;        // il popUp (elemento nell'array dei popUp, -1 se non c'è)
  35.  
  36.         /*** constructor
  37.          *
  38.          ****/
  39.         CtxtRec(void);
  40.         
  41.         /*** destructor
  42.          *
  43.          ****/
  44.         ~CtxtRec(void);
  45. };
  46.  
  47. class CequivalentRec
  48. {
  49.     public:
  50.         char        key;            // il campo di input
  51.         CPushButton    *button;        // il bottone abilitato
  52.  
  53.         /*** constructor
  54.          *
  55.          ****/
  56.         CequivalentRec(void);
  57.         
  58.         /*** destructor
  59.          *
  60.          ****/
  61.         ~CequivalentRec(void);
  62. };
  63.  
  64. class CgestisciDLOGDati
  65. {
  66.     protected:
  67.         DialogPtr         theDialog;            // il puntatore ai dati del DLOG;
  68.         short            editRsrc;            // il descrittore dei field.
  69.         RGBColor         backGround;            // il colore di BackGround
  70.         RGBColor        oldbackGround;
  71.         short             nEdit;                // il numero di campi Edit;
  72.         short             actEditNum;            // l'item del campo attivo;
  73.         CtxtRec         *actTEH;            // il Text Edit attuale;
  74.         CtxtRec            ***textEdit;        // i dati relativi ai TextEdit
  75.         short            nPopUp;                // il numero dei popUp
  76.         short            nPopUpEdFl;            // il numero dei popUp dei campi line edit
  77.         CGestisciMenu    ***popUps;            // i dati relativi ai PopUp
  78.         short             nListe;                // il numero di campi liste;
  79.         CGestisciElOrd    *actLista;            // la lista attuale
  80.         CGestisciElOrd     ***liste;            // le due liste con scroll bar
  81.         CDefPushButton     ***actDefaultDesc;    // il descrittore dei dati;
  82.         short            actDefaultNum;        // il numero di default button;
  83.         CDefPushButton    *actDefaultButton;    // il bottone di default attuale;
  84.         CPushButton        *cancel;
  85.         CequivalentRec    ***equivalent;
  86.         short            equivalentNum;        
  87.         long            oldTime;
  88.         Boolean         doubleClick;
  89.         Boolean            hasPayedFee;
  90.         Boolean            testRegistering;
  91.         enum {    ignoto = -1, kLineEdit, kScrollEdit, kPopUp, kList };
  92.         enum {    editMenuID = 129, fontMenuID = 131, sizeMenuID, styleMenuID };
  93.         enum {    aboutDLOGID = 129, sizeDLOGID = 131, helpDLOGID, registerDLOGID, ckRegInfoDLOGID,
  94.                 registerInfoDLOGID };
  95.         enum {    size9pt = 1, size10pt, size12pt, size18pt, size24pt, size36pt, sizeOther = 8 };
  96.         enum {    plainItem = 1, boldItem, italicItem, underlineItem, outlineItem, shadowItem, 
  97.                 condesedItem, extendedItem };
  98.         enum {    cutEditItem = 1, copyEditItem, pastEditItem, cancelEditItem };
  99.         enum {    aboutDLOGDescr = 130, sizeDLOGDescr = 131, helpDLOGDescr, registerDLOGDescr, 
  100.                 ckRegInfoDLOGDescr, registerInfoDLOGDescr };
  101.         enum {    sizeItemField = 2, okSizeDLOGitem = 4, cancelSizeDLOGitem };
  102.         enum {    ok_registerInfoDLOGitem = 12 };
  103.         enum {    okAboutDLOGitem = 2, iconAboutDLOGItem, helpAboutDLOGItem };
  104.         enum {    okhelpDLOGitem = 1 };
  105.         enum {     icon_registerDLOGitem = 2, registerDLOGitem, notYet_registerDLOGitem };
  106.         enum {     ok_kRegInfoItem = 5, cancel_kRegInfoItem, name_kRegInfoItem, lastName_kRegInfoItem, 
  107.                 country_kRegInfoItem, email_kRegInfoItem, code_kRegInfoItem = 12};
  108.         enum {    nameTextID =132, lastNameTextID, countryTextID, emailTextID, codeTextID,
  109.                 msgTextID };
  110.         
  111.         /****
  112.          *    encode();
  113.          *
  114.          *    codifica la stringa str.
  115.          ***/
  116.         void encode(char *code, Cstring_P &str, short n);
  117.  
  118.         /****
  119.          *    registerInfo();
  120.          *
  121.          ***/
  122.         void registerInfo(void);
  123.  
  124.         /****
  125.          *    callForRegistering();
  126.          *
  127.          ***/
  128.         void callForRegistering(void);
  129.         
  130.         /****
  131.          *    hasPayFee();
  132.          *
  133.          ***/
  134.         Boolean hasPayFee(void);
  135.         
  136.         /****
  137.          *    registeringDLOG();
  138.          *
  139.          ***/
  140.         void registeringDLOG(void);
  141.  
  142.         /****
  143.          *    result = LoadVers_100();
  144.          *
  145.          *    Inizializza i dati relativi al DLOG. (vesion 1.0.1)
  146.          *    (Presuppone che alcuni dati nella struttura globale siano
  147.          *    presenti).
  148.          *
  149.          *    The 'Edl1' type:
  150.          *        Number of Edit Field                ZCNT
  151.          *            LSTC
  152.          *                Edit Field                    DWRD
  153.          *                FontPSTRSize                DWRD
  154.          *                Has ScrollBar                BOOL
  155.          *                Has PopUp                    BOOL
  156.          *                PopUp Field                    DWRD
  157.          *                PopUp                         IDDWRD
  158.          *            LSTE
  159.          *        Number of List Field                ZCNT
  160.          *            LSTC
  161.          *                Edit Field                    DWRD
  162.          *                Number of Item                ZCNT
  163.          *                    LSTC
  164.          *                        Dimensione            DWRD
  165.          *                        Titolo                PSTR
  166.          *                        Font Titolo            PSTR
  167.          *                        Size Font Titolo    DWRD
  168.          *                        FontPSTRSize        DWRD
  169.          *                        Can Modify            BOOL
  170.          *                    LSTE
  171.          *                Has ScrollBar                BOOL
  172.          *                Can Modify Font                BOOL        (add at v_101)
  173.          *                Has Number Field            BOOL
  174.          *                Number Font                    PSTR
  175.          *                Number Size                    DWRD
  176.          *            LSTE
  177.          *        Number of PopUp Field                ZCNT
  178.          *            LSTC
  179.          *                PopUp Field                    DWRD
  180.          *                PopUp                         IDDWRD
  181.          *            LSTE
  182.          *        Default control info                ZCNT
  183.          *            LSTC
  184.          *                Input field                    DWRD
  185.          *                Button field                DWRD
  186.          *            LSTE
  187.          *        Cancel Button                        DWRD
  188.          *        Button Equivalent                    ZCNT
  189.          *            LSTC
  190.          *                Key Char                    CHAR
  191.          *                Button field                DWRD
  192.          *            LSTE
  193.          *
  194.          *
  195.          *    Val OUTPUT:    TRUE se tutto ok, FALSE altrimenti.
  196.          *
  197.          ***/
  198.         Boolean CgestisciDLOGDati::LoadVers_101(Ptr    resPtr);
  199.  
  200.         /****
  201.          *    result = InitData_gestDLOG();
  202.          *
  203.          *    Inizializza i dati relativi al DLOG.
  204.          *    (Presuppone che alcuni dati nella struttura globale siano
  205.          *    presenti).
  206.          *
  207.          *    Val OUTPUT:    TRUE se tutto ok, FALSE altrimenti.
  208.          *
  209.          ***/
  210.         Boolean InitData(void);
  211.  
  212.         /***
  213.          *    MantainCursor(&theEvent);
  214.          *
  215.          ***/
  216.         void MantainCursor(void);
  217.  
  218.         /*** 
  219.          *    searchNext_gestDLOG(item);
  220.          *
  221.          *    Val OUTPUT: restituisce il prossimo campo text Edit.
  222.          *
  223.          ***/
  224.         short searchNext(short item);
  225.  
  226.         /*** 
  227.          *    searchNext(item);
  228.          *
  229.          *    Val OUTPUT: restituisce il precedente campo text Edit.
  230.          *
  231.          ***/
  232.         short searchPrec(short item);
  233.  
  234.         /***
  235.          *    setNewDefault(itemHit);
  236.          *
  237.          *    modifica il bottone di default
  238.          *
  239.          *    Par INPUT:    'itemHit' il numero di item.
  240.          *
  241.          ***/
  242.         void setNewDefault(short itemHit);
  243.  
  244.         /***
  245.          *    linkToDefault(itemHit);
  246.          *
  247.          *    cerca il bottone legato all'item.
  248.          *
  249.          *    Par INPUT:    'itemHit' il numero di item.
  250.          *    Val OUTPUT:    l'item del bottone, -1 se non c'è.
  251.          *
  252.          ***/
  253.         short linkToDefault(short itemHit, short *pos);
  254.  
  255.         /***
  256.          *    initTextData(itemHit);
  257.          *
  258.          *    Inizializza i dati relativi ad un text Edit
  259.          *
  260.          *    Par INPUT:    'itemHit' il numero di item.
  261.          *
  262.          ***/
  263.         void initTextData(short itemHit);
  264.  
  265.         /***
  266.          *    pos = searchPopUp_gestDLOG(item);
  267.          *
  268.          *    ritorna la posizione nell'array dei
  269.          *    textEdit, -1 se non lo trova.
  270.          *
  271.          ***/
  272.         short searchPopUp(short item);
  273.  
  274.         /***
  275.          *    pos = searchTextEdit(item);
  276.          *
  277.          *    ritorna la posizione nell'array dei
  278.          *    textEdit, -1 se non lo trova.
  279.          *
  280.          ***/
  281.         short searchTextEdit(short item);
  282.  
  283.         /***
  284.          *    pos = searchList(item);
  285.          *
  286.          *    ritorna la posizione nell'array dei
  287.          *    textEdit, -1 se non lo trova.
  288.          *
  289.          ***/
  290.         short searchList(short item);
  291.         
  292.         /****
  293.          *    disabilitaTextData();
  294.          *
  295.          ***/
  296.         void disabilitaTextData(void);
  297.         
  298.         /****
  299.          *    disabilitaListaData();
  300.          *
  301.          ***/
  302.         void disabilitaListaData(void);
  303.         
  304.         /*** activeField(short itemHit);
  305.         *
  306.         *    Attiva un textEdit.
  307.         *
  308.         *    Par INPUT:    'itemHit' l'item del dialog su cui l'utente ha cliccato.
  309.         *
  310.         ************************************************************************/
  311.         void activeTextEdit(short itemHit, Boolean SelectAll = false);
  312.  
  313.         /***
  314.          *    searchButtonEq(minusChar);
  315.          *
  316.          *    controlla gli equivalente sui bottoni.
  317.          *
  318.          ***/
  319.         short searchButtonEq(char minusChar, short *pos);
  320.                 
  321.         /***
  322.          *    itemProcessed = whichItem(itemHit);
  323.          *
  324.          *    Determina il tipo di item selezionato
  325.          *
  326.          *    Par INPUT:    'itemHit' l'item ritornato dal dialog
  327.          *
  328.          ***/
  329.         short whichItem(short itemHit, short *pos);
  330.         
  331.         /****
  332.          *    sostituisciTesto_gestDLOG(elOrdHdl, nEl, data);
  333.          *
  334.          *    inserisce del testo nel textEdit corrente
  335.          *
  336.          ***/
  337.         Boolean sostituisciTesto(short item, short nEl, Cstring_P *str);
  338.         
  339.         /***
  340.          *    setDefault(value);
  341.          *
  342.          *    disabilita i bottoni di default.
  343.          *
  344.          ***/
  345.         void setDefault(short value);
  346.  
  347.         /***
  348.          *    about();
  349.          *
  350.          *    mostra l'about DLOG.
  351.          *
  352.          ***/
  353.         void about(void);
  354.  
  355.         /***
  356.          *    help();
  357.          *
  358.          *    mostra l'help DLOG.
  359.          *
  360.          ***/
  361.         void help(void);
  362.  
  363.         /***
  364.          *    gestisciMBarSel(sel);
  365.          *
  366.          *    gestisce il menu del DLOG.
  367.          *
  368.          *    Par INPUT:    <sel> la selezione effettuata.
  369.          *
  370.          ***/
  371.         Boolean gestisciMBarSel(long sel, Point *pt);
  372.  
  373.     public:
  374.         Boolean     disableAboutDLOG;
  375.         /*** 
  376.          *    destructor.
  377.          *
  378.          ***/
  379.         ~CgestisciDLOGDati(void);
  380.         
  381.         /*** 
  382.          *    constructor.
  383.          *
  384.          ***/
  385.         CgestisciDLOGDati(void);
  386.  
  387.         /****
  388.          *    IgestisciDLOGDati(theDialog, editRsrc);
  389.          *
  390.          *    Val OUTPUT:    false se tutto ok, true altrimenti.
  391.          *
  392.          ***/
  393.         Boolean IgestisciDLOGDati(DialogPtr theDialog, short editRsrc);
  394.  
  395.         /****
  396.          *    Dispose();
  397.          *
  398.          ***/
  399.         void Dispose(void);
  400.  
  401.         /****
  402.          *    updateEvt_gestDLOG(dataHdl);
  403.          *
  404.          *    Gestisce l'updateEvt nei campi definiti come "user"
  405.          *    (inListaNomi, inScrollBar)
  406.          ***/
  407.         void updateEvt(void);
  408.  
  409.         /***
  410.          *    KeyDown_gestDLOG(&theEvent);
  411.          *
  412.          *    filtra le chiavi. Resituisce -1 se non
  413.          *    ha gestito l'evento il numero di item
  414.          *    attivo altrimenti.
  415.          *
  416.          ***/
  417.         short gestEvent(EventRecord *theEvent);
  418.  
  419.         /****
  420.          *    idle(elOrdHdl);
  421.          *
  422.          *    verifica se è attivo un textEdit.
  423.          *
  424.          ***/
  425.         void idle(void);
  426.  
  427.         /***
  428.          *    disableDefault(item);
  429.          *
  430.          *    disabilita i bottoni di default.
  431.          *
  432.          ***/
  433.         void disableDefault(void);
  434.         
  435.         /****
  436.          *    inTextEdit(elOrdHdl);
  437.          *
  438.          *    verifica se è attivo un textEdit.
  439.          *
  440.          ***/
  441.         Boolean inTextEdit(void);
  442.  
  443.         /***
  444.          *    itemSelect(&theEvent, itemHit, &pos, &status);
  445.          *
  446.          *    filtra gli item. Resituisce ignoto se non
  447.          *    ha gestito l'evento il tipo di item reso
  448.          *    attivo altrimenti.
  449.          *
  450.          ***/
  451.         short itemSelect(    EventRecord *theEvent, short itemHit, short *pos, 
  452.                                 Boolean *status);
  453.         /***
  454.          *    TEH = getTextEdit_gestDLOG(item);
  455.          *
  456.          *    ritorna la l'handle al 
  457.          *    textEdit, NULL se non lo trova.
  458.          *
  459.          ***/
  460.         CtxtRec *getTextEdit(short item);
  461.  
  462.         /***
  463.          *    lista = searchList_gestDLOG(item);
  464.          *
  465.          *    ritorna la lista, NULL se non lo trova.
  466.          *
  467.          ***/
  468.         CGestisciElOrd *getList(short item);
  469.  
  470.         /***
  471.          *    pos = searchPopUp_gestDLOG(item);
  472.          *
  473.          *    ritorna il popUp, NULL se non lo trova.
  474.          *
  475.          ***/
  476.         CGestisciMenu *getPopUp(short item);
  477.         
  478.         /***
  479.          *    textStr = getText(item);
  480.          *
  481.          *    legge il testo del TextItem <item>.
  482.          *
  483.          ***/
  484.         Cstring_P *getText(short item);
  485.  
  486.         /****
  487.          *    cancellaTesto(elOrdHdl, item);
  488.          *
  489.          *    cancella il testo del textEdit 'item'.
  490.          *
  491.          ***/
  492.         Boolean cancellaTesto(short item);
  493.  
  494.         /****
  495.          *    aggiungiTesto_gestDLOG(item, nEl, str);
  496.          *
  497.          *    inserisce del testo nel textEdit corrente
  498.          *
  499.          ***/
  500.         Boolean aggiungiTesto(short item, short nEl, Cstring_P *str);
  501.  
  502.         /***
  503.          *    setItemONMenu();
  504.          *
  505.          *    Set the menu items.
  506.          *
  507.          *    Par OUTPUT:    true se errore, false altrimenti.
  508.          *
  509.          ***/
  510.         Boolean setItemONMenu(void);
  511. };
  512. #endif